# -*- coding: UTF-8 -*-
'''
@Project ：pythonProject 
@File    ：functionDemo6.py
@Author  ：siwei
@Date    ：2023/11/6 21:43 
@other   ：str.print---->print(str)
'''


# 匿名函数:是指没有名字的函数,这种函数只能使用一次,一般是在函数的函数体只有一句代码且只有一个返回值时,可以用匿名函数来简化
# result = lambda 参数列表:表达式

# 1.函数
def calc(a, b):  # 函数的函数体只有一句代码且只有一个返回值
    return a + b


print(calc(1, 2))

# 利用匿名函数简化函数:
result = lambda a, b: a + b  # result是函数
print(type(result), result(1, 2))  # 类型:<class 'function'>,调用:result函数

print('-' * 20)

# 2.列表遍历
lst = [1, 2, 3, 4, 5]
for i in range(len(lst)):
    print(lst[i])
print()

# 利用匿名函数简化列表遍历
for i in range(len(lst)):
    result1 = lambda x: x[i]  # 根据索引取值,result1是匿名函数,类型:<class 'function'>.x是函数的形参(列表)
    print(result1(lst))  # 给result1函数传一个列表

# 3.对列表排序
# seq.sort( key=None, reverse=False)
# seq表示一个序列
# key主要是用来进行比较的元素，只有一个参数。
# reverse为排序规则，默认升序（False），可以指定降序（True）
student_score = [{'name': 'zhangsan', 'score': 80},
                 {'name': 'lisi', 'score': 90},
                 {'name': 'wangwu', 'score': 100},
                 {'name': 'zhaoliu', 'score': 70}]

student_score.sort(key=lambda x: x['score'], reverse=True)  # x['score']=x.get('score')
print(student_score)
